1. Technical Field
The present invention is directed generally toward a method and apparatus for configuring devices in a data processing system. Still more particularly, the present invention relates to a method and apparatus for configuring multiple controllers in a data processing system.
2. Description of the Related Art
A redundant array of independent disks (RAID) is a disk subsystem that is used to increase performance and/or provide fault tolerance. RAID includes a set of two or more ordinary hard disks and a specialized disk controller that contains the RAID functionality. Developed initially for servers and stand-alone disk storage systems, RAID is increasingly popular in desktop PCs primarily for fault tolerance. RAID can also be implemented via software only, but with less performance, especially when rebuilding data after a failure.
RAID improves performance by disk striping, which interleaves bytes or groups of bytes across multiple drives. This disk striping allows for the reading and writing of more than one disk simultaneously. Fault tolerance in these types of systems is achieved by mirroring or parity. With mirroring, a one hundred percent duplication of the data occurs on two drives. This configuration is referred to as RAID 1. In RAID 3 and 5, parity is used to calculate the data in two drives and store the results on a third drive. Specifically, a bit from drive 1 is XOR'd with a bit from drive 2, and the result bit is stored on drive 3. With this type of configuration, a failed drive can be hot swapped with a new one, and the RAID controller automatically rebuilds the lost data from the failed drive.
RAID systems come in all sizes from desktop units to floor-standing models. Any desktop PC can be turned into a RAID system by adding a RAID controller board and the appropriate number of IDE or SCSI disks. Stand-alone units may also include large amounts of cache as well as redundant power supplies. RAID controllers require special configuration programs, which are used to create and manage RAID volumes and controller features. As new features are added, the complexity of these programs increase. In some cases, host memory requirements may exceed available memory for these configuration programs using host memory. These configuration utilities are typically used during the booting of a data processing system. During this boot phase, many systems have only a limited amount of memory for use. For example, many systems may have 256 megabytes of memory available during the booting of a system, but only 192 kilobytes to about 256 kilobytes are actually usable while the system is booting without causing a system crash. By exceeding the available memory, the configuration utility may crash the data processing system. One solution is to move configuration functions from the host side into the firmware of the RAID controller. One problem with this type of solution is that the firmware configuration utility typically can only control the controller on which the utility runs. This limitation becomes a problem when multiple controllers are present in a data processing system because configuring multiple controllers is impossible from only a single controller.
Therefore, it would be advantageous to have an improved method, apparatus, and computer instructions for managing configuration of multiple controllers.